API Reference: Libraries

 Top

vxbPciAtaStorageK

NAME

vxbPciAtaStorageK - PCI IDE host controller ATA/IDE and ATAPI CDROM vxBus storage device driver

ROUTINES

vxbPciAtaInstInit( ) - First pass initialization
vxbPciAtaInstInit2( ) - Second pass initialization
vxbPciAtaInstConnect( ) - Final initialization
vxbPciAtaStorageRegister( ) - register driver with vxbus
ataIntr( ) - ATA/IDE controller interrupt handler.
pciAtaDrv( ) - Initialize the ATA driver
pciAtaXbdDevCreate( ) - create an XBD device for a ATA/IDE disk
pciAtaDevCreate( ) - create a device for a ATA/IDE disk
ataDriveInit( ) - initialize ATA drive
ataBlkDevFill( )( )nbsp;)" class="routine">ataBlkDevFill( )( )nbsp;)" class="routine">ataBlkDevFill( )( ) - fills block device structure
ataBlkRd( )( )nbsp;)" class="routine">ataBlkRd( )( )nbsp;)" class="routine">ataBlkRd( )( ) - reads specified blocks from the device
ataBlkWrt( ) - write one or more blocks to a ATA/IDE disk
ataBlkIoctl( ) - This routine perform the driver specific request.
ataStub( ) - block device stub
pciAtaBlkRW( ) - read or write sectors to a ATA/IDE disk.
ataReset( ) - reset a ATA/IDE disk controller
ataStatus( ) - check status of a ATA/IDE disk controller
atapiBlkWrt( ) - write one or more blocks to an ATAPI Device.
atapiBlkRd( ) - read one or more blocks from an ATAPI Device.
atapiReset( ) - reset a ATAPI drive
atapiStatusChk( ) - check device status
pciAtapiPktCmdSend( ) - Issue a Packet command.
pciAtapiIoctl( ) - Control the drive.
ataCHSPack( ) - Pack Cylinder,Head,sector values to address a sector.
ataBestTransferModeFind( ) - Justify the best transfer mode using the cycle time
ataUDmaCableChk( ) - Find the cable type.
atapiParamsPrint( ) - Print the drive parameters.
atapiBlkIoctl( ) - do device specific control function
pciAtapiCtrlMediumRemoval( ) - Issues PREVENT/ALLOW MEDIUM REMOVAL packet command
pciAtapiRead10( ) - read one or more blocks from an ATAPI Device.
pciAtapiReadCapacity( ) - issue a READ CD-ROM CAPACITY command to a ATAPI device
pciAtapiReadTocPmaAtip( ) - issue a READ TOC command to a ATAPI device
pciAtapiScan( ) - issue SCAN packet command to ATAPI drive.
pciAtapiSeek( ) - issues a SEEK packet command to drive.
pciAtapiSetCDSpeed( ) - issue SET CD SPEED packet command to ATAPI drive.
pciAtapiStopPlayScan( ) - issue STOP PLAY/SCAN packet command to ATAPI drive.
pciAtapiStartStopUnit( ) - Issues START STOP UNIT packet command
pciAtapiTestUnitRdy( ) - issue a TEST UNIT READY command to a ATAPI drive
pciAtaCmd( ) - issue a RegisterFile command to ATA/ATAPI device.
pciAtaInit( ) - initialize ATA device.
pciAtaRW( ) - read/write a data from/to required sector.
pciAtaDmaRW( ) - read/write a number of sectors on the current track in DMA mode
pciAtaPiInit( ) - init a ATAPI CD-ROM disk controller
pciAtaDevIdentify( ) - identify device
pciAtaParamRead( ) - Read drive parameters
pciAtaCtrlReset( ) - reset the specified ATA/IDE disk controller
pciAtaStatusChk( ) - Check status of drive and compare to requested status.
ataWdog( ) - ATA/IDE controller watchdog handler.
pciAtapiPktCmd( ) - execute an ATAPI command with error processing
atapiPktCmdExec( ) - execute an ATAPI command without error processing
atapiNonOverlapTransferLoop( ) - loop for DRQ Interrupts without Overlapping
atapiOverlapTransferLoop( ) - loop for DRQ Interrupts with Overlapping
atapiDmaTransfer( ) - a stub
pciAtapiInit( ) - init ATAPI CD-ROM disk controller
atapiPIOTransfer( ) - transfer a single data packet via PIO
atapiReqSense( ) - issue a REQUEST_SENSE command to a device
ataXbdDump( ) - XBD block device dump routine
ataXbdStrategy( ) - XBD block device strategy routine
ataXbdIoctl( ) - XBD block device ioctl routine
ataXbdDevCreateSyncHandler( ) - creates the handler
ataXbdMediaTest( ) - Test a block wrapper for media existence
ataXbdTest( ) - Test to see if media is present or not. If a change
ataXbdEject( ) - Eject the device and instantiate the next step
ataCoreDump( ) - write sectors to a ATA/IDE disk with ints off, no OS
ataCoreWrite( ) - write a data to disk sectors.
pciAtaXbdRawio( ) - do raw I/O access
pciAtaRawio( ) - do raw I/O access
pciAtaConfig( ) - configure an ATA drive (hard disk or cdrom drive)
pciAtaConfigInit( ) - intialize the hard disk driver
pciAtaGetCtrl( ) - get globalPciAtaDrvCtrl->ataCtrl

DESCRIPTION

BLOCK DEVICE DRIVER:

This is a Block Device Driver for ATA/ATAPI devices on PCI IDE host controller. It also provides neccessary functions to user for device and its features control which are not used or utilized by file system.

This driver provides standard Block Device Driver functions,(blkRd, blkWrt, ioctl, statusChk, and reset) for ATA and ATAPI devices separately as the scheme of implementation differs. These functions are implemented as ataBlkRd( ), ataBlkWrt( ), ataBlkIoctl( ), ataStatus( ) and ataReset( ) for ATA devices and atapiBlkRd( ), atapiBlkWrt( ), atapiBlkIoctl( ), atapiStatusChk( ) and atapiReset( ) for ATAPI devices. The Block Device Structure BLK_DEV is updated with these function pointers ata initialization of the driver depending on the type of the device in function pciAtaDevCreate( ).

pciAtaDrv( ), a user callable function, initializes ATA/ATAPI devices present on the specified IDE controller(either primary or secondary), which must be called once for each controller, before usage of this driver, usally called from usrRoot( )in usrConfig.c.

The routine pciAtaDevCreate( ), which is user callable function, is used to mount a logical drive on an ATAPI drive.This routine returns a pointer to BLK_DEV structure, which is used to mount the file system on the logical drive.

OTHER NECESSARY FUNCTIONS FOR USER:

There are various functions provided to user, which can be classified to different catagories as device contol function, device information functions and functions meant for packet devices.

Device Control Function:

pciAtapiIoctl( ) function is used to control a device. Block Device Driver functions ataBlkIoctl( ) and atapiBlkIcotl( )functions are also routed to this function. This function implements various control command functions which are not used by the I/O system (like power managment feature set commands, host protected feature set commands, security feature set commands, media control functions etc).

Device Information Function:

In this catagory various functions are implmented depending on the information required. These functions return information required ( like cylinder count, Head count, device serial number, device Type, etc)from the internal device structures.

Packet Command Functions:

Although Block Device Driver functions deliver packet commands using functions provided by atapiLib.c for required functionality. There are group of functions provided in this driver to user for ATAPI device, which implements packet commands for CD_ROM that comply to ATAPI-SFF8020i specification which are essentially required for CD ROM operation for file system. These functions are named after their command name (like for REQUEST SENSE packet command atapiReqSense( ) function). To issue other packet commands pciAtapiPktCmdSend( ) can be used.

This driver also provides a generic function pciAtapiPktCmdSend( ) to issue a packet command to ATAPI devices, which can be utilized by user to issue packet command directly instead using the implmented functions also may be used to send new commands ( may come in later specs) to device. User can issue any packet command using pciAtapiPktCmdSend( ) function to the required device by passing its BLK_DEV structure pointer and pointer for ATAPI_CMD command packet.

typedef of ATAPI_CMD

    typedef struct atapi_cmd
        {
        UINT8          cmdPkt [ATAPI_MAX_CMD_LENGTH];
        char           **ppBuf;
        UINT32         bufLength;
        ATA_DATA_DIR   direction;
        UINT32         desiredTransferSize;
        BOOL           dma;
        BOOL           overlap;
        } ATAPI_CMD;

and ATA_DATA_DIR typedef is

typedef enum  /* with respect to host/memory */
    {
    NON_DATA, /* non data command     */
    OUT_DATA, /* to drive from memory */
    IN_DATA   /* from drive to memory */
    } ATA_DATA_DIR;

User is expected supposed to fill the ATAPI_CMD structure with required parameters of the packet and pass the ATAPI_CMD structure pointer to pciAtapiPktCmdSend( ) fuuction for command execution.

All the packet command functions require ATA_DEV structure to be passed, which alternatively a BLK_DEV Device Structure of the device. One should type convert the structure and the same BLK_DEV structrue pointer to these functions.

The routine ataPiRawio( ) supports physical I/O access. The first argument is the controller number, 0 or 1; the second argument is drive number, 0 or 1; the third argument is a pointer to an ATA_RAW structure.

PARAMETERS:

The ataPiDrv( ) function requires a configuration flag as a parameter. The configuration flag is one of the following or Bitwise OR of any of the following combination:

configuration flag =
    Transfer mode | Transfer bits | Transfer unit | Geometry parameters

Transfer mode Description Transfer Rate
ATA_PIO_DEF_0 PIO default mode
ATA_PIO_DEF_1 PIO default mode, no IORDY
ATA_PIO_0 PIO mode 0 3.3 MBps
ATA_PIO_1 PIO mode 1 5.2 MBps
ATA_PIO_2 PIO mode 2 8.3 MBps
ATA_PIO_3 PIO mode 3 11.1 MBps
ATA_PIO_4 PIO mode 4 16.6 MBps
ATA_PIO_AUTO PIO max supported mode
ATA_DMA_SINGLE_0 Single DMA mode 0 2.1 MBps
ATA_DMA_SINGLE_1 Single DMA mode 1 4.2 MBps
ATA_DMA_SINGLE_2 Single DMA mode 2 8.3 MBps
ATA_DMA_MULTI_0 Multi word DMA mode 0 4.2 MBps
ATA_DMA_MULTI_1 Multi word DMA mode 1 13.3 MBps
ATA_DMA_MULTI_2 Multi word DMA mode 2 16.6 MBps
ATA_DMA_ULTRA_0 Ultra DMA mode 0 16.6 MBps
ATA_DMA_ULTRA_1 Ultra DMA mode 1 25.0 MBps
ATA_DMA_ULTRA_2 Ultra DMA mode 2 33.3 MBps
ATA_DMA_ULTRA_3 Ultra DMA mode 3 44.4 MBps
ATA_DMA_ULTRA_4 Ultra DMA mode 4 66.6 MBps
ATA_DMA_ULTRA_5 Ultra DMA mode 5 100.0 MBps
ATA_DMA_AUTO DMA max supported mode
Transfer bits
ATA_BITS_16 RW bits size, 16 bits
ATA_BITS_32 RW bits size, 32 bits
Transfer unit
ATA_PIO_SINGLE RW PIO single sector
ATA_PIO_MULTI RW PIO multi sector
Geometry parameters
ATA_GEO_FORCE set geometry in the table
ATA_GEO_PHYSICAL set physical geometry
ATA_GEO_CURRENT set current geometry

ISA SingleWord DMA mode is obsolete in ata-3.

The Transfer rates shown above are the Burst transfer rates. If ATA_PIO_AUTO is specified, the driver automatically chooses the maximum PIO mode supported by the device. If ATA_DMA_AUTO is specified, the driver automatically chooses the maximum Ultra DMA mode supported by the device and if the device doesn't support the Ultra DMA mode of data transfer, the driver chooses the best Multi Word DMA mode. If the device doesn't support the multiword DMA mode, driver chooses the best single word DMA mode. If the device doesn't support DMA mode, driver automatically chooses the best PIO mode. So it is recommended to specify the ATA_DMA_AUTO.

If ATA_PIO_MULTI is specified, and the device does not support it, the driver automatically chooses single sector or word mode. If ATA_BITS_32 is specified, the driver uses 32-bit transfer mode regardless of the capability of the drive. The Single word DMA mode will not be supported by the devices compliant to ATA/ATAPI-5 or higher.

This driver supports UDMA mode data transfer from device to host, provided 80 conductor cable is used for required controller device. This check done at the initilisation of the device from the device parameters and if 80 conductor cable is connected then UDMA mode transfer is selected for operation subject to condition that required UDMA mode is supported by device as well as host. This driver follows ref-3 Chapter 4 "Determining a Drive's Transfer Rate Capability" to determine drives best transfer rate for all modes ( ie UDMA, MDMA, SDMA and PIO modes).

The host IDE Bus master functions are to be mapped to follwing macro defined for various functionality in header file which are used in this driver.

ATA_HOST_CTRL_INIT - initialize the controller

ATA_HOST_DMA_ENGINE_INIT - initialize bus master DMA engine

ATA_HOST_DMA_ENGINE_START - Start bus master operation

ATA_HOST_DMA_ENGINE_STOP - Stop bus master operation

ATA_HOST_DMA_TRANSFER_CHK - check bus master data transfer complete

ATA_HOST_DMA_MODE_NEGOTIATE - get mode supported by controller

ATA_HOST_SET_DMA_RWMODE - set controller to required mode

ATA_HOST_CTRL_RESET - reset the controller

If ATA_GEO_PHYSICAL is specified, the driver uses the physical geometry parameters stored in the drive. If ATA_GEO_CURRENT is specified, the driver uses current geometry parameters initialized by BIOS. If ATA_GEO_FORCE is specified, the driver uses geometry parameters stored in sysLib.c.

The geometry parameters are stored in the structure table ataTypes[] in sysLib.c. That table has two entries, the first for drive 0, the second for drive 1. The members of the structure are:

    int cylinders;              /* number of cylinders */
    int heads;                  /* number of heads */
    int sectors;                /* number of sectors per track */
    int bytes;                  /* number of bytes per sector */
    int precomp;                /* precompensation cylinder */

The driver supports two controllers and two drives on each. This is dependent on the configuration parameters supplied to ataPiDrv( ).

SMP CONSIDERATIONS

Most of the processing in this driver occurs in the context of a dedicated task, and therefore is inherently SMP-safe. One area of possible concurrence occurs in the interrupt service routine, ataIntr( ). An ISR-callable spin lock take/give pair has been placed around the code which acknowledges/clears the ATA controller's interrupt status register. If the BSP or application provides functions for ataIntPreProcessing or ataIntPostProcessing, consideration will have to be given to making these functions SMP-safe. Most likely, some portion(s) of these functions will need to be protected by a spin lock. The spin lock allocated for the controller can be used. Consult the SMP Migration Guide for hints.

References:
    1) ATAPI-5 specification "T13-1321D Revision 1b, 7 July 1999"
    2) ATAPI for CD-ROMs "SFF-8020i Revision 2.6, Jan 22,1996"
    3) Intel 82801BA (ICH2), 82801AA (ICH), and 82801AB (ICH0) IDE Controller
       Programmer's Reference Manual, Revision 1.0 July 2000

Source of Reference Documents:
    1) ftp://ftp.t13.org/project/d1321r1b.pdf
    2) http://www.bswd.com/sff8020i.pdf

SEE ALSO

VxWorks Programmer's Guide: I/O System


API Reference: Routines

 Top

vxbPciAtaInstInit( )

NAME

vxbPciAtaInstInit( ) - First pass initialization

NOTE

RETURNS

N/A

ERRNO

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

vxbPciAtaInstInit2( )

NAME

vxbPciAtaInstInit2( ) - Second pass initialization

DESCRIPTION

none

RETURNS

N/A

ERRNO

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

vxbPciAtaInstConnect( )

NAME

vxbPciAtaInstConnect( ) - Final initialization

DESCRIPTION

none

RETURNS

N/A

ERRNO

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

vxbPciAtaStorageRegister( )

NAME

vxbPciAtaStorageRegister( ) - register driver with vxbus

DESCRIPTION

none

RETURNS

N/A

ERRNO

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataIntr( )

NAME

ataIntr( ) - ATA/IDE controller interrupt handler.

DESCRIPTION

none

RETURNS

N/A

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaDrv( )

NAME

pciAtaDrv( ) - Initialize the ATA driver

DESCRIPTION

This routine initializes the ATA/ATAPI device driver, initializes IDE host controller and sets up interrupt vectors for requested controller. This function must be called once for each controller, before any access to drive on the controller, usually which is called by usrRoot( ) in usrConfig.c.

If it is called more than once for the same controller, it returns OK with a message display Host controller already initialized , and does nothing as already required initialization is done.

Additionally it identifies devices available on the controller and initializes depending on the type of the device (ATA or ATAPI). Initialization of device includes reading parameters of the device and configuring to the defaults.

RETURNS

OK, or ERROR if initialization fails.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK, pciAtaDevCreate( )


API Reference: Routines

 Top

pciAtaXbdDevCreate( )

NAME

pciAtaXbdDevCreate( ) - create an XBD device for a ATA/IDE disk

DESCRIPTION

Use the existing code to create a standard block dev device, then create an XBD device associated with the BLKDEV.

RETURNS

a device identifier upon success, or NULLDEV otherwise

ERRNO

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaDevCreate( )

NAME

pciAtaDevCreate( ) - create a device for a ATA/IDE disk

DESCRIPTION

This routine creates a device for a specified ATA/IDE or ATAPI CDROM disk.

ctrl is a controller number for the ATA controller; the primary controller is 0. The maximum is specified via ATA_MAX_CTRLS.

drive is the drive number for the ATA hard drive; the master drive is 0. The maximum is specified via ATA_MAX_DRIVES.

The nBlocks parameter specifies the size of the device in blocks. If nBlocks is zero, the whole disk is used.

The blkOffset parameter specifies an offset, in blocks, from the start of the device to be used when writing or reading the hard disk. This offset is added to the block numbers passed by the file system during disk accesses. (VxWorks file systems always use block numbers beginning at zero for the start of a device.)

RETURNS

A pointer to a block device structure (BLK_DEV) or NULL if memory cannot be allocated for the device structure.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK, dosFsMkfs( ), dosFsDevInit( ), rawFsDevInit( )


API Reference: Routines

 Top

ataDriveInit( )

NAME

ataDriveInit( ) - initialize ATA drive

DESCRIPTION

This routine checks the drive presence, identifies its type, initializes the drive and driver control structures with the parameters of the drive.

RETURNS

OK if drive was initialized successfuly, or ERROR.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK

ataBlkDevFill( )( )

NAME

ataBlkDevFill( )( ) - fills block device structure

DESCRIPTION

This routine fills a block device structure with real parameters corresponding to the given device, or with stubs if a device is not detected by previous ataDriveInit () call. The routine considers offset and size requested for the device in pciAtaDevCreate () call.

RETURNS

N/A

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK, pciAtaDevCreate (), ataDriveInit ()

ataBlkRd( )( )

NAME

ataBlkRd( )( ) - reads specified blocks from the device

DESCRIPTION

This routine reads one or more blocks from the specified device, starting with the specified block number.

If any block offset was specified during pciAtaDevCreate( ), it is added to startBlk before the transfer takes place.

RETURNS

OK, ERROR if the read command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataBlkWrt( )

NAME

ataBlkWrt( ) - write one or more blocks to a ATA/IDE disk

DESCRIPTION

This routine writes one or more blocks to the specified device, starting with the specified block number.

If any block offset was specified during pciAtaDevCreate( ), it is added to startBlk before the transfer takes place.

RETURNS

OK, ERROR if the write command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataBlkIoctl( )

NAME

ataBlkIoctl( ) - This routine perform the driver specific request.

RESULT

OK, ERROR and errno must be set

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataStub( )

NAME

ataStub( ) - block device stub

DESCRIPTION

This routine services as stub for a block device structure's routine pointers.

RETURNS

ERROR always.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaBlkRW( )

NAME

pciAtaBlkRW( ) - read or write sectors to a ATA/IDE disk.

DESCRIPTION

Read or write sectors to a ATA/IDE disk. startBlk is the start Block, nBlks is the number of blocks, pBuf is data buffer pointer and direction is the direction either to read or write. It should be O_WRONLY for data write to drive or O_RDONLY for read data from drive.

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataReset( )

NAME

ataReset( ) - reset a ATA/IDE disk controller

DESCRIPTION

This routine resets a ATA/IDE disk controller.

RETURNS

OK, always.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataStatus( )

NAME

ataStatus( ) - check status of a ATA/IDE disk controller

DESCRIPTION

This routine check status of a ATA/IDE disk controller.

RETURNS

OK, ERROR .

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiBlkWrt( )

NAME

atapiBlkWrt( ) - write one or more blocks to an ATAPI Device.

DESCRIPTION

This routine writes one or more blocks to the specified device, starting with the specified block number.

RETURNS

OK, ERROR if the write command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiBlkRd( )

NAME

atapiBlkRd( ) - read one or more blocks from an ATAPI Device.

DESCRIPTION

This routine reads one or more blocks from the specified device, starting with the specified block number.

RETURNS

OK, ERROR if the read command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiReset( )

NAME

atapiReset( ) - reset a ATAPI drive

DESCRIPTION

This routine resets a ATAPI drive

RETURNS

OK, or ERROR.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiStatusChk( )

NAME

atapiStatusChk( ) - check device status

DESCRIPTION

This routine issues a TEST UNIT READY command to a ATAPI device to detect a medium change. It is called by filesystems before doing open( )'s or creat( )'s.

RETURNS

OK or ERROR.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiPktCmdSend( )

NAME

pciAtapiPktCmdSend( ) - Issue a Packet command.

DESCRIPTION

This function issues a packet command to specified drive.

See library file description for more details.

RETURN

SENSE_NO_SENSE if success, or ERROR if not successful for any reason

RETURNS

Not Available

ERRNO

S_ioLib_DEVICE_ERROR

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiIoctl( )

NAME

pciAtapiIoctl( ) - Control the drive.

DESCRIPTION

This routine is used to control the drive like setting the password, putting in power save mode, locking/unlocking the drive, ejecting the medium etc. The argument function defines the ioctl command, password, and integer array is the password required or set password value for some commands. Arguments arg0, pointer arg1, pointer to pointer buffer ppBuf are commad specific.

The following commands are supported for various functionality.

IOCTL_DIS_MASTER_PWD

Disable the master password. where 4th parameter is the master password.

IOCTL_DIS_USER_PWD

Disable the user password.

IOCTL_ERASE_PREPARE

Prepare the drive for erase incase the user password lost, and it is in max security mode.

IOCTL_ENH_ERASE_UNIT_USR

Erase in enhanced mode supplying the user password.

IOCTL_ENH_ERASE_UNIT_MSTR

Erase in enhanced mode supplying the master password.

IOCTL_NORMAL_ERASE_UNIT_MSTR

Erase the drive in normal mode supplying the master password.

IOCTL_NORMAL_ERASE_UNIT_USR

Erase the drive in normal mode supplying the user password.

IOCTL_FREEZE_LOCK

Freeze lock the drive.

IOCTL_SET_PASS_MSTR

Set the master password.

IOCTL_SET_PASS_USR_MAX

Set the user password in Maximum security mode.

IOCTL_SET_PASS_USR_HIGH

Set the user password in High security mode.

IOCTL_UNLOCK_MSTR

Unlock the master password.

IOCTL_UNLOCK_USR

Unlock the user password.

IOCTL_CHECK_POWER_MODE

Find the drive power saving mode.

IOCTL_IDLE_IMMEDIATE

Idle the drive immediatly. this will get the drive from the standby or active mode to idle mode immediatly.

IOCTL_SLEEP

Set the drive in sleep mode. this is the highest power saving mode. to return to the normal active or IDLE mode, drive need an hardware reset or power on reset or device reset command.

IOCTL_STANDBY_IMMEDIATE

Standby the drive immediatly.

IOCTL_EJECT_DISK

Eject the media of an ATA drive. Use IOsystem ioctl function for ATAPI drive.

IOCTL_GET_MEDIA_STATUS

Find the media status.

IOCTL_ENA_REMOVE_NOTIFY

Enable the drive's removable media notification feature set.

The following table describes these arguments validity. These are tabulated in the following form

----------------------------------------------------------------------
FUNCTION                       
password [16]         arg0            *arg1               **ppBuf
----------------------------------------------------------------------

IOCTL_DIS_MASTER_PWD
password            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                            
IOCTL_DIS_USER_PWD                        
password            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                                               
IOCTL_ERASE_PREPARE                   
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_ENH_ERASE_UNIT_USR         
password            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                     
IOCTL_ENH_ERASE_UNIT_MSTR        
password            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                     
IOCTL_NORMAL_ERASE_UNIT_MSTR     
password            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                      
IOCTL_NORMAL_ERASE_UNIT_USR      
password            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                      
IOCTL_FREEZE_LOCK      
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_SET_PASS_MSTR              
password            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                     
IOCTL_SET_PASS_USR_MAX         
password            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                      
IOCTL_SET_PASS_USR_HIGH          
password            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_UNLOCK_MSTR                
password            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_UNLOCK_USR                 
password            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_READ_NATIVE_MAX_ADDRESS    - it returns address in <arg1>
ATA_ZERO         (ATA_SDH_IBM or    LBA/CHS add           ATA_ZERO
                  ATA_SDH_LBA )   ( LBA 27:24 / Head       
                                    LBA 23:16 / cylHi      
                                    LBA 15:8  / cylLow     
                                    LBA 7:0   / sector no )
                              
IOCTL_SET_MAX_ADDRESS           - <arg1> is pointer to LBA address
ATA_ZERO    SET_MAX_VOLATILE or     LBA address           ATA_ZERO
            SET_MAX_NON_VOLATILE                       
                                           
IOCTL_SET_MAX_SET_PASS           
password            ATA_ZERO         ATA_ZERO             ATA_ZERO

IOCTL_SET_MAX_LOCK               
ATA_ZERO            ATA_ZERO         ATA_ZERO             ATA_ZERO

IOCTL_SET_MAX_UNLOCK             
ATA_ZERO            ATA_ZERO         ATA_ZERO             ATA_ZERO

IOCTL_SET_MAX_FREEZE_LOCK        
ATA_ZERO            ATA_ZERO         ATA_ZERO             ATA_ZERO

IOCTL_CHECK_POWER_MODE           - returns power mode in <arg1>
ATA_ZERO            ATA_ZERO         returns power        ATA_ZERO
                                     mode
         power modes  :-1)    0x00  Device in standby mode
                        2)    0x80  Device in Idle mode
                        3)    0xff  Device in Active or Idle mode                                    

IOCTL_IDLE_IMMEDIATE          
ATA_ZERO            ATA_ZERO         ATA_ZERO             ATA_ZERO

IOCTL_SLEEP                     
ATA_ZERO            ATA_ZERO         ATA_ZERO             ATA_ZERO

IOCTL_STANDBY_IMMEDIATE         
ATA_ZERO            ATA_ZERO         ATA_ZERO             ATA_ZERO

IOCTL_ENB_POW_UP_STDBY          
ATA_ZERO            ATA_ZERO         ATA_ZERO             ATA_ZERO

IOCTL_ENB_SET_ADV_POW_MNGMNT    
ATA_ZERO                arg0         ATA_ZERO             ATA_ZERO
                         
 NOTE:- arg0 value - 1). for minimum power consumption with standby 0x01h
                     2). for minimum power consumption without standby 0x01h
                     3). for maximum performance  0xFEh

IOCTL_DISABLE_ADV_POW_MNGMNT    
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                                          
IOCTL_EJECT_DISK                                          
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                                          
IOCTL_LOAD_DISK                                           
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                                          
IOCTL_MEDIA_LOCK                                          
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO
                                                          
IOCTL_MEDIA_UNLOCK                                        
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_GET_MEDIA_STATUS      - returns status in <arg1>    
ATA_ZERO            ATA_ZERO            status            ATA_ZERO

  NOTE: value in <arg1> is 
          0x04    -Command aborted
          0x02    -No media in drive
          0x08    -Media change is requested
          0x20    -Media changed                      
          0x40    -Write Protected
               
IOCTL_ENA_REMOVE_NOTIFY       
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_DISABLE_REMOVE_NOTIFY   
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_SMART_DISABLE_OPER  
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_SMART_ENABLE_ATTRIB_AUTO    
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_SMART_DISABLE_ATTRIB_AUTO   
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_SMART_ENABLE_OPER         
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_SMART_OFFLINE_IMMED       
ATA_ZERO          SubCommand          ATA_ZERO            ATA_ZERO
      (refer to ref1 page no 190)

IOCTL_SMART_READ_DATA     - returns pointer to pointer <ppBuf> of read data                   
ATA_ZERO            ATA_ZERO          ATA_ZERO            read data
                                                      
IOCTL_SMART_READ_LOG_SECTOR  - returns pointer to pointer <ppBuf>of read data
ATA_ZERO          no of sector to        log Address      read data                                       
                  be read                     

IOCTL_SMART_RETURN_STATUS         
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO    

IOCTL_SMART_SAVE_ATTRIB       
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO

IOCTL_SMART_WRITE_LOG_SECTOR 
ATA_ZERO          no of to be written     Log Sector address  write data

      NOTE: - <ppBuf> contains pointer to pointer data buffer to be written

IOCTL_CFA_ERASE_SECTORS        
ATA_ZERO          sector count        PackedCHS/LBA       ATA_ZERO

IOCTL_CFA_REQUEST_EXTENDED_ERROR_CODE     
ATA_ZERO            ATA_ZERO          ATA_ZERO            ATA_ZERO 
               
IOCTL_CFA_TRANSLATE_SECTOR - <ppbuf> returns pointer to data pointer.
ATA_ZERO            ATA_ZERO           PackedLBA/CHS        read data                    
                                                    
IOCTL_CFA_WRITE_MULTIPLE_WITHOUT_ERASE 
ATA_ZERO          sector count        PackedCHS/LBA       write data

      NOTE: -<pbuf> contains pointer to data pointer.     
                                                      
IOCTL_CFA_WRITE_SECTORS_WITHOUT_ERASE       
ATA_ZERO          sector count        PackedCHS/LBA       write data

RETURNS

OK or ERROR

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataCHSPack( )

NAME

ataCHSPack( ) - Pack Cylinder,Head,sector values to address a sector.

DESCRIPTION

This routine packes all the 3 parameters (cylinder, head, sector number) to a single 32 bit word to adress a sector on the drive.

RETURNS

OK.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataBestTransferModeFind( )

NAME

ataBestTransferModeFind( ) - Justify the best transfer mode using the cycle time

DESCRIPTION

none

RETURNS

N/A.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataUDmaCableChk( )

NAME

ataUDmaCableChk( ) - Find the cable type.

DESCRIPTION

This routine will find the cable type used for specified controller and device. If a 40 conductor cable is connected uDmaCableOkay flag is made FALSE and if 80 conductor cable using 40 pin connector is set to TRUE of ataCtrl.

RETURNS

OK

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiParamsPrint( )

NAME

atapiParamsPrint( ) - Print the drive parameters.

DESCRIPTION

This user callable routine will read the current parameters from the corresponding drive and will print the specified range of parameters on the console.

RETURNS

N/A.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiBlkIoctl( )

NAME

atapiBlkIoctl( ) - do device specific control function

DESCRIPTION

This routine is called when the file system cannot handle an ioctl( ) function.

 Functions :
 Play CD      - ATAPI_CMD_PLAY_CD_LBA
 Set CD Speed - ATAPI_CMD_SET_CD_SPEED

RETURNS

OK or ERROR.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiCtrlMediumRemoval( )

NAME

pciAtapiCtrlMediumRemoval( ) - Issues PREVENT/ALLOW MEDIUM REMOVAL packet command

DESCRIPTION

This function issues a command to drive to PREVENT or ALLOW MEDIA removal. Argument arg0 selects to LOCK_EJECT or UNLOCK_EJECT.

To lock media eject arg0 should be LOCK_EJECT To unload media eject arg0 should be UNLOCK_EJECT

RETURN

OK or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiRead10( )

NAME

pciAtapiRead10( ) - read one or more blocks from an ATAPI Device.

DESCRIPTION

This routine reads one or more blocks from the specified device, starting with the specified block number.

The name of this routine relates to the SFF-8090i (Mt. Fuji), used for DVD-ROM, and indicates that the entire packet command uses 10 bytes, rather than the normal 12.

RETURNS

OK, ERROR if the read command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiReadCapacity( )

NAME

pciAtapiReadCapacity( ) - issue a READ CD-ROM CAPACITY command to a ATAPI device

DESCRIPTION

This routine issues a READ CD-ROM CAPACITY command to a specified ATAPI device.

RETURN

OK, or ERROR if the command fails.

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiReadTocPmaAtip( )

NAME

pciAtapiReadTocPmaAtip( ) - issue a READ TOC command to a ATAPI device

DESCRIPTION

This routine issues a READ TOC command to a specified ATAPI device.

RETURN

OK, or ERROR if the command fails.

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiScan( )

NAME

pciAtapiScan( ) - issue SCAN packet command to ATAPI drive.

DESCRIPTION

This function issues SCAN packet command to ATAPI drive. The function argument should be 0x00 for fast forward and 0x10 for fast reversed operation.

RETURN

OK or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiSeek( )

NAME

pciAtapiSeek( ) - issues a SEEK packet command to drive.

DESCRIPTION

This function issues a SEEK packet command (not ATA SEEK command) to the specified drive.

RETURN

OK or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiSetCDSpeed( )

NAME

pciAtapiSetCDSpeed( ) - issue SET CD SPEED packet command to ATAPI drive.

DESCRIPTION

This function issues SET CD SPEED packet command to ATAPI drive while reading and writing of ATAPI drive(CD-ROM) data. The arguments readDriveSpeed and writeDriveSpeed are in Kbytes/Second.

RETURN

OK or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiStopPlayScan( )

NAME

pciAtapiStopPlayScan( ) - issue STOP PLAY/SCAN packet command to ATAPI drive.

RETURN

OK or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiStartStopUnit( )

NAME

pciAtapiStartStopUnit( ) - Issues START STOP UNIT packet command

DESCRIPTION

This function issues a command to drive to MEDIA EJECT and MEDIA LOAD. Argument arg0 selects to EJECT or LOAD.

To eject media arg0 should be EJECT_DISK To load media arg0 should be LOAD_DISK

RETURN

OK or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiTestUnitRdy( )

NAME

pciAtapiTestUnitRdy( ) - issue a TEST UNIT READY command to a ATAPI drive

DESCRIPTION

This routine issues a TEST UNIT READY command to a specified ATAPI drive.

RETURNS

OK, or ERROR if the command fails.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaCmd( )

NAME

pciAtaCmd( ) - issue a RegisterFile command to ATA/ATAPI device.

DESCRIPTION

This function executes ATA command to ATA/ATAPI devices specified by arguments ctrl and drive. cmd is command to be executed and other arguments arg0 to arg5 are interpreted for differently in each case depending on the cmd command. Some commands (like ATA_CMD_SET_FEATURE) have sub commands the case in which arg0 is interpreted as subcommand and arg1 is subcommand specific.

In general these arguments arg0 to arg5 are interpreted as command registers of the device as mentioned below.

arg0 - Feature Register
arg1 - Sector count
arg2 - Sector number
arg3 - CylLo
arg4 - CylHi
arg5 - sdh Register

As these registers are interpreted for different purpose for each command, arguments are not named after registers.

The following commands are valid in this function and the validity of each argument for different commands. Each command is tabulated in the form

---------------------------------------------------------------------  
COMMAND 
      ARG0     |   ARG1    |   ARG2   |   ARG3   |   ARG4   |   ARG5
---------------------------------------------------------------------

ATA_CMD_INITP                
       0             0           0          0          0         0

ATA_CMD_RECALIB
       0             0           0          0          0         0

ATA_PI_CMD_SRST                                  
       0             0           0          0          0         0

ATA_CMD_EXECUTE_DEVICE_DIAGNOSTIC              
       0             0           0          0          0         0

ATA_CMD_SEEK
      cylinder    head           0          0          0         0
or   LBA high     LBA low 

ATA_CMD_SET_FEATURE       
      FR          SC             0          0          0         0
  (SUBCOMMAND)  (SubCommand   
              Specific Value)

ATA_CMD_SET_MULTI
  sectors per block  0          0           0          0         0

ATA_CMD_IDLE
      SC             0          0           0          0         0
   (Timer Period) 

ATA_CMD_STANDBY
      SC             0          0           0          0         0
   (Timer Period)              

ATA_CMD_STANDBY_IMMEDIATE
       0             0           0          0          0         0

ATA_CMD_SLEEP                
       0             0           0          0          0         0

ATA_CMD_CHECK_POWER_MODE    
       0             0           0          0          0         0

ATA_CMD_IDLE_IMMEDIATE      
       0             0           0          0          0         0

ATA_CMD_SECURITY_DISABLE_PASSWORD 
   ATA_ZERO     ATA_ZERO    ATA_ZERO    ATA_ZERO   ATA_ZERO     ATA_ZERO  

ATA_CMD_SECURITY_ERASE_PREPARE    
       0             0           0          0          0         0

ATA_CMD_SECURITY_ERASE_UNIT       
   ATA_ZERO     ATA_ZERO    ATA_ZERO    ATA_ZERO   ATA_ZERO     ATA_ZERO

ATA_CMD_SECURITY_FREEZE_LOCK      
       0             0           0          0          0         0

ATA_CMD_SECURITY_SET_PASSWORD     
       0             0           0          0          0         0

ATA_CMD_SECURITY_UNLOCK           
       0             0           0          0          0         0

ATA_CMD_SMART  (not implemented)      
      FR          SC          SN        ATA_ZERO   ATA_ZERO     ATA_ZERO
 (SUBCOMMAND) (SubCommand   (SubCommand   
            Specific Value)  Specific Value)   

ATA_CMD_GET_MEDIA_STATUS   
       0             0           0          0          0         0

ATA_CMD_MEDIA_EJECT        
       0             0           0          0          0         0

ATA_CMD_MEDIA_LOCK         
       0             0           0          0          0         0

ATA_CMD_MEDIA_UNLOCK       
       0             0           0          0          0         0

ATA_CMD_CFA_ERASE_SECTORS  
       0             0           0          0          0         0

ATA_CMD_CFA_WRITE_SECTORS_WITHOUT_ERASE 
    ATA_ZERO        SC      ATA_ZERO    ATA_ZERO   ATA_ZERO     ATA_ZERO

ATA_CMD_CFA_WRITE_SECTORS_WITHOUT_ERASE
    ATA_ZERO        SC      ATA_ZERO    ATA_ZERO   ATA_ZERO     ATA_ZERO
  
ATA_CMD_CFA_TRANSLATE_SECTOR
    ATA_ZERO    ATA_ZERO        SN         cylLo     cylHi       DH

ATA_CMD_CFA_REQUEST_EXTENDED_ERROR_CODE
    ATA_ZERO    ATA_ZERO    ATA_ZERO    ATA_ZERO   ATA_ZERO     ATA_ZERO
 
ATA_CMD_SET_MAX      
      FR        ATA_ZERO    ATA_ZERO    ATA_ZERO   ATA_ZERO     ATA_ZERO
    (SUBCOMMAND) 

The following are the subcommands valid for ATA_CMD_SET_MAX and are tabulated as below

---------------------------------------------------------------------  
SUBCOMMAND(in ARG0)
      ARG1    |       ARG2    |       ARG3    |       ARG4    |      ARG5
---------------------------------------------------------------------

ATA_SUB_SET_MAX_ADDRESS        
      SC      sector no   cylLo       cylHi       head + modebit
(SET_MAX_VOLATILE
      or           
SET_MAX_NON_VOLATILE)
                     
ATA_SUB_SET_MAX_SET_PASS     
      ATA_ZERO        ATA_ZERO        ATA_ZERO        ATA_ZERO       ATA_ZERO 

ATA_SUB_SET_MAX_LOCK         
      ATA_ZERO        ATA_ZERO        ATA_ZERO        ATA_ZERO       ATA_ZERO

ATA_SUB_SET_MAX_UNLOCK       
      ATA_ZERO        ATA_ZERO        ATA_ZERO        ATA_ZERO       ATA_ZERO

ATA_SUB_SET_MAX_FREEZE_LOCK  
      ATA_ZERO        ATA_ZERO        ATA_ZERO        ATA_ZERO       ATA_ZERO

In ATA_CMD_SET_FEATURE subcommand only arg0 and arg1 are valid, all other are ATA_ZERO.

------------------------------------------------------
SUBCOMMAND(ARG0)                          ARG1
------------------------------------------------------

ATA_SUB_ENABLE_8BIT                       ATA_ZERO

ATA_SUB_ENABLE_WCACHE                     ATA_ZERO 

ATA_SUB_SET_RWMODE                        mode                
                                   (see page no 168 table 28 in atapi Spec5 )
ATA_SUB_ENB_ADV_POW_MNGMNT                0x90

ATA_SUB_ENB_POW_UP_STDBY                  ATA_ZERO

ATA_SUB_POW_UP_STDBY_SPIN                 ATA_ZERO

ATA_SUB_BOOTMETHOD                        ATA_ZERO

ATA_SUB_ENA_CFA_POW_MOD1                  ATA_ZERO

ATA_SUB_DISABLE_NOTIFY                    ATA_ZERO

ATA_SUB_DISABLE_RETRY                     ATA_ZERO

ATA_SUB_SET_LENGTH                        ATA_ZERO    

ATA_SUB_SET_CACHE                         ATA_ZERO

ATA_SUB_DISABLE_LOOK                      ATA_ZERO

ATA_SUB_ENA_INTR_RELEASE                  ATA_ZERO

ATA_SUB_ENA_SERV_INTR                     ATA_ZERO

ATA_SUB_DISABLE_REVE                      ATA_ZERO

ATA_SUB_DISABLE_ECC                       ATA_ZERO
                                             
ATA_SUB_DISABLE_8BIT                      ATA_ZERO
                                             
ATA_SUB_DISABLE_WCACHE                    ATA_ZERO
                                             
ATA_SUB_DIS_ADV_POW_MNGMT                 ATA_ZERO         
                                             
ATA_SUB_DISB_POW_UP_STDBY                 ATA_ZERO
                                             
ATA_SUB_ENABLE_ECC                        ATA_ZERO
                                             
ATA_SUB_BOOTMETHOD_REPORT                 ATA_ZERO                                     
                                             
ATA_SUB_DIS_CFA_POW_MOD1                  ATA_ZERO
                                             
ATA_SUB_ENABLE_NOTIFY                     ATA_ZERO         
                                             
ATA_SUB_ENABLE_RETRY                      ATA_ZERO
                                             
ATA_SUB_ENABLE_LOOK                       ATA_ZERO
                                             
ATA_SUB_SET_PREFETCH                      ATA_ZERO

ATA_SUB_SET_4BYTES                        ATA_ZERO    
                                             
ATA_SUB_ENABLE_REVE                       ATA_ZERO
                                             
ATA_SUB_DIS_INTR_RELEASE                  ATA_ZERO

ATA_SUB_DIS_SERV_INTR                     ATA_ZERO                                                  

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaInit( )

NAME

pciAtaInit( ) - initialize ATA device.

DESCRIPTION

This routine issues a soft reset command to ATA device for initialization.

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaRW( )

NAME

pciAtaRW( ) - read/write a data from/to required sector.

DESCRIPTION

Read/write a number of sectors on the current track

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaDmaRW( )

NAME

pciAtaDmaRW( ) - read/write a number of sectors on the current track in DMA mode

DESCRIPTION

Read/write a number of sectors on the current track in DMA mode

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaPiInit( )

NAME

pciAtaPiInit( ) - init a ATAPI CD-ROM disk controller

DESCRIPTION

This routine resets a ATAPI CD-ROM disk controller.

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaDevIdentify( )

NAME

pciAtaDevIdentify( ) - identify device

DESCRIPTION

This routine checks whether the device is connected to the controller, if it is, this routine determines drive type. The routine set type field in the corresponding ATA_DRIVE structure. If device identification failed, the routine set state field in the corresponding ATA_DRIVE structure to ATA_DEV_NONE.

RETURNS

TRUE if a device present, FALSE otherwise

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaParamRead( )

NAME

pciAtaParamRead( ) - Read drive parameters

DESCRIPTION

Read drive parameters.

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaCtrlReset( )

NAME

pciAtaCtrlReset( ) - reset the specified ATA/IDE disk controller

DESCRIPTION

This routine resets the ATA controller specified by ctrl. The device control register is written with SRST=1

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaStatusChk( )

NAME

pciAtaStatusChk( ) - Check status of drive and compare to requested status.

DESCRIPTION

Wait until the drive is ready.

RETURNS

OK, ERROR if the drive status check times out.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataWdog( )

NAME

ataWdog( ) - ATA/IDE controller watchdog handler.

DESCRIPTION

none

RETURNS

N/A

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtapiPktCmd( )

NAME

pciAtapiPktCmd( ) - execute an ATAPI command with error processing

DESCRIPTION

This routine executes a single ATAPI command, checks the command completion status and tries to recover if an error encountered during command execution at any stage.

RETURN

SENSE_NO_SENSE if success, or ERROR if not successful for any reason.

RETURNS

Not Available

ERRNO

S_ioLib_DEVICE_ERROR

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiPktCmdExec( )

NAME

atapiPktCmdExec( ) - execute an ATAPI command without error processing

DESCRIPTION

This routine executes a single ATAPI command without checking of completion status, and attempts to recover. An invoking routine is responsible for error processing.

RETURN

OK, or ERROR if an error is encountered during data transfer.

RETURNS

Not Available

ERRNO

S_ioLib_DEVICE_ERROR

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiNonOverlapTransferLoop( )

NAME

atapiNonOverlapTransferLoop( ) - loop for DRQ Interrupts without Overlapping

DESCRIPTION

This routine loop for Data Request Interrupts until all data packets are transferred. It invoked when pciAtapiPktCmd( ) executes a NON Overlapped command.

RETURN

OK, or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK, atapiOverlapTransferLoop( )


API Reference: Routines

 Top

atapiOverlapTransferLoop( )

NAME

atapiOverlapTransferLoop( ) - loop for DRQ Interrupts with Overlapping

DESCRIPTION

This routine loop for Data Request Interrupts until all data packets are transferred. It invoked when pciAtapiPktCmd( ) executes an Overlapped command. When Device executes an Overlapped command, it releases the ATA bus until the device is ready to transfer a data or to present the completion status.

RETURN

OK, or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK, atapiNonOverlapTransferLoop( )


API Reference: Routines

 Top

atapiDmaTransfer( )

NAME

atapiDmaTransfer( ) - a stub

RETURN

OK

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK, atapiPioTransfer( )


API Reference: Routines

 Top

pciAtapiInit( )

NAME

pciAtapiInit( ) - init ATAPI CD-ROM disk controller

DESCRIPTION

This routine resets the ATAPI CD-ROM disk controller.

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

atapiPIOTransfer( )

NAME

atapiPIOTransfer( ) - transfer a single data packet via PIO

DESCRIPTION

This routine transfers a single data packet via PIO.

RETURN

OK, or ERROR

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK, atapiDMATransfer( )


API Reference: Routines

 Top

atapiReqSense( )

NAME

atapiReqSense( ) - issue a REQUEST_SENSE command to a device

DESCRIPTION

This routine issues a REQUEST_SENSE command to a specified ATAPI device and read the results.

RETURNS

OK, or ERROR if the command fails.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataXbdDump( )

NAME

ataXbdDump( ) - XBD block device dump routine

DESCRIPTION

/NOMANUAL

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataXbdStrategy( )

NAME

ataXbdStrategy( ) - XBD block device strategy routine

DESCRIPTION

/NOMANUAL

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataXbdIoctl( )

NAME

ataXbdIoctl( ) - XBD block device ioctl routine

DESCRIPTION

/NOMANUAL

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataXbdDevCreateSyncHandler( )

NAME

ataXbdDevCreateSyncHandler( ) - creates the handler

DESCRIPTION

/NOMANUAL

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataXbdMediaTest( )

NAME

ataXbdMediaTest( ) - Test a block wrapper for media existence

DESCRIPTION

/NOMANUAL

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataXbdTest( )

NAME

ataXbdTest( ) - Test to see if media is present or not. If a change

DESCRIPTION

             of media has occurred, test XBD's for 0 size and eject
             the device and instantiate the next device accordingly.

/NOMANUAL

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataXbdEject( )

NAME

ataXbdEject( ) - Eject the device and instantiate the next step

DESCRIPTION

/NOMANUAL

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataCoreDump( )

NAME

ataCoreDump( ) - write sectors to a ATA/IDE disk with ints off, no OS

DESCRIPTION

Write sectors to a ATA/IDE disk without using any OS services and with interrupts off.
     pDev pointer to device.
     startBlk is the start Block,
     nBlks is the number of blocks,
     pBuf is data buffer pointer 

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

ataCoreWrite( )

NAME

ataCoreWrite( ) - write a data to disk sectors.

DESCRIPTION

write a number of sectors to the disk with interrupts off

RETURNS

OK, ERROR if the command didn't succeed.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaXbdRawio( )

NAME

pciAtaXbdRawio( ) - do raw I/O access

DESCRIPTION

This routine is called to perform raw I/O access.

device is the XBD device identifier for the drive sector starting sector for I/O operation numSecs number of sectors to read/write data pointer to data buffer dir read or write

The pAtaRaw is a pointer to the structure ATA_RAW which is defined in pciAtaDrv.h.

RETURNS

OK, or ERROR if the parameters are not valid.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaRawio( )

NAME

pciAtaRawio( ) - do raw I/O access

DESCRIPTION

This routine is called to perform raw I/O access.

drive is a drive number for the hard drive: it must be 0 or 1.

The pAtaRaw is a pointer to the structure ATA_RAW which is defined in pciAtaDrv.h.

RETURNS

OK, or ERROR if the parameters are not valid.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaConfig( )

NAME

pciAtaConfig( ) - configure an ATA drive (hard disk or cdrom drive)

DESCRIPTION

This routine configures an ATA hard disk. Parameters:

drive

the drive number of the hard disk; 0 is C: and 1 is D:.

devName

the mount point for all partitions which are expected to be present on the disk, separated with commas, for example "/ata0,/ata1" or "C:,D:". Blanks are not allowed in this string.

RETURNS

OK or ERROR.

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK, src/config/usrAta.c, VxWorks Programmer's Guide: I/O System, Local File Systems, Intel i386/i486/Pentium


API Reference: Routines

 Top

pciAtaConfigInit( )

NAME

pciAtaConfigInit( ) - intialize the hard disk driver

DESCRIPTION

This routine is called from usrConfig.c to initialize the hard drive.

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK


API Reference: Routines

 Top

pciAtaGetCtrl( )

NAME

pciAtaGetCtrl( ) - get globalPciAtaDrvCtrl->ataCtrl

DESCRIPTION

This routine is called from mkboot.c ,when makes the bootable hard drive.

RETURNS

Not Available

ERRNO

Not Available

SEE ALSO

vxbPciAtaStorageK